package com.fdms.aurora;

/*

MySQL and Java Developer's Guide

Mark Matthews, Jim Cole, Joseph D. Gradecki
Publisher Wiley,
Published February 2003, 
ISBN 0471269239

*/


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;

public class Transaction {
  Connection connection;

  public Transaction() {
    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      connection = DriverManager
          .getConnection("jdbc:mysql://192.168.1.25/accounts?user=spider&password=spider");
    } catch (Exception e) {
      System.err.println("Unable to find and load driver");
      System.exit(1);
    }
  }

  public void doWork() {
    try {
      java.util.Date now = new java.util.Date();
      connection.setAutoCommit(false);
      Statement statement = connection.createStatement(
          ResultSet.TYPE_SCROLL_INSENSITIVE,
          ResultSet.CONCUR_UPDATABLE);
      ResultSet rs = statement
          .executeQuery("SELECT * FROM acc_add WHERE acc_id = 1034055 and ts = 0");

      // set old row ts = current time
      rs.next();
      rs.updateTimestamp("ts", new Timestamp(now.getTime()));
      rs.updateRow();

      rs.moveToInsertRow();
      rs.updateInt("add_id", rs.getInt("add_id"));
      rs.updateInt("acc_id", rs.getInt("acc_id"));
      rs.updateString("name", rs.getString("name"));
      rs.updateString("address1", "555 East South Street");
      rs.updateString("address2", "");
      rs.updateString("address3", "");
      rs.updateString("city", rs.getString("city"));
      rs.updateString("state", rs.getString("state"));
      rs.updateString("zip", rs.getString("zip"));
      rs.updateTimestamp("ts", new Timestamp(0));
      rs.updateTimestamp("act_ts", new Timestamp(now.getTime()));
      rs.insertRow();
      connection.commit();

      rs.close();
      statement.close();
      connection.close();

    } catch (Exception e) {
      try {
        connection.rollback();
      } catch (SQLException error) {
      }
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
    Transaction trans = new Transaction();
    trans.doWork();
  }
}
